package com.fdb.efp.nls.service.facade;

import com.fdb.basic.framework.core.base.DataOptionalAuthority;
import com.fdb.efp.nls.service.vo.PrdInfoApplyVO;
import com.fdb.efp.nls.service.vo.PrdInfoVO;
import com.fdb.efp.nls.service.vo.PrdParamVO;
import com.fdb.efp.nls.service.vo.PrdRuleRelVO;

import java.util.List;

/**
 * <p>Description:产品表				<p>
 * @author fuzm
 * @date 2018-05-03
 */
public interface PrdInfoService extends DataOptionalAuthority {
	
	public List<PrdInfoVO> queryAllOwner(PrdInfoVO prdInfoVo);
	
	public List<PrdInfoVO> queryAllCurrOrg(PrdInfoVO prdInfoVo);
	
	public List<PrdInfoVO> queryAllCurrDownOrg(PrdInfoVO prdInfoVo);

	public int insertPrdInfo(PrdInfoVO vo);
	
	public int deleteByPk(PrdInfoVO prdInfoVo);
	
	public int updateByPk(PrdInfoVO prdInfoVo);
	
	public PrdInfoVO queryByPk(PrdInfoVO prdInfoVo);
	/**
	 * 
	 * @description:根据产品编号查询产品信息
	 * @param inPrdInfoVo
	 * @return
	 * @date:2019年1月26日 上午11:35:48
	 * @author:cenyj
	 */
	public PrdInfoVO queryByPrdCode(PrdInfoVO inPrdInfoVo);
	
	public PrdInfoVO queryLastPrdInfo(PrdInfoVO prdInfoVo);
	
	public PrdInfoVO queryValidPrdInfo(PrdInfoVO prdInfoVo);
	
	public PrdInfoVO buildPrdInfoVO(PrdInfoApplyVO prdInfoApplyVo);

	public List<PrdInfoVO> queryPrdInfoSeletor(PrdInfoVO prdInfoVo);
	/**
	 * 产品配置查询
	 * @param prdId 产品ID
	 * @param contTemplate 合同模板清单
	 * @param modContForm 提额合同模板清单
	 * @param creditForm 授信审批表单
	 * @param rateScheme 支用方案
	 * @param eleNucForm 电核表单
	 * @param crdApprFlow 业务流转
	 * @param crdMeaMedol 额度测算
	 * @param amtApprFlow 提额流程
	 * @param amtMeaMedol 提额测算模型
	 * 
	 */
	public PrdInfoVO queryPrdInfo(PrdParamVO prdParamVO);
	/**
	 *  根据产品编号、期限查询产品利率
	 * @param prdId 产品ID
	 * @param term 期限
	 */
	public PrdInfoVO queryPrdInfoRate(String prdId, String term);
	/**
	 * 产品配置查询
	 * @param rateSchemeId 支用方案
	 * @param contTemplateId 合同模板
	 * @param eleNucFormId 电核表单
	 * @param crdMeaMedolId 额度测算
	 * @param crdApprFlowId 业务流转
	 *
	 */
	public List<PrdInfoVO> queryPrdInfoByOthers(PrdInfoVO prdInfoVo);
	/**
	 * 查询规则集ID 被那些产品引用
	 * @param ruleCollId 规则集ID
	 * @return 引用规则集ID 的产品ID列表
	 */
	List<String> queryRuleCollQuotePrdId(String ruleCollId);
	/**
	 * 查询产品规则关联信息
	 * @param prdId
	 * @param ruleCollType
	 * @return
	 */
	public PrdRuleRelVO queryPrdRuleRel(String prdId, String ruleCollType);
	
	/**
	 * 授信申请查询产品信息
	 * @param prdCode
	 * @param term
	 * @return
	 */
	public PrdInfoVO queryPrdInfo4LmtApply(String prdCode, String term);
	
	
	public List<PrdInfoVO> queryPrdType(PrdInfoVO prdInfoVo);
	
	/**
	  * 分页查询列表数据（不做权限控制）
	  * @param prdInfoVo
	  * @return
	  * @author qiuyf
	  * @since 2019年2月18日 下午4:40:36
	  * @version 1.0
	 */
	public List<PrdInfoVO> queryAllPrdInfoList(PrdInfoVO prdInfoVo);
	/**
	 * TODO 查询产品额度<br>
	 *
	 * @author wanglihua
	 * @date 2019年5月10日 上午11:52:05
	 * @version 0.1
	 * @since 2019年5月10日 上午11:52:05
	 */
	public PrdInfoVO queryAmt(String prdCode);


	/**
	 * 查询符合条件的数据，如果参数对象的值都为空，那么返回的是所有数据，所有传参要控制好参数字段值
	 *
	 * @param prdInfoVO
	 * @return
	 */
	public List<PrdInfoVO> queryAllEligible(PrdInfoVO prdInfoVO);

	public List<PrdInfoVO> queryAllCurrOwnerPrd(PrdInfoVO prdInfoVo);

	public List<PrdInfoVO> queryPrdInfoByPrd(PrdInfoVO prdInfoVo);

    List<PrdInfoVO> listByGuarWay(String guarWay);
}
